package com.gxm.base.grammar_运算语法.面试题;

import org.junit.Test;

public class 自动拆装箱 {

    @Test
    public void test01(){
        /**
         * short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗;（2017-
         * 11-12-wl）
         * 前者不正确，后者正确。 对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型，因此 s1+1 运算结果也是 int 型，
         * 需要强制转换类型才能赋值给 short 型。而 short s1 = 1; s1 += 1;可以正确编译，因为 s1+= 1;相当于 s1 =
         * (short)(s1 + 1);其中有隐含的强制类型转换。
         */
        short s1 = 1;
        //s1 = s1 + 1;
        s1 += 1;
    }

    @Test
    public void test02(){
        Integer a = new Integer(3);
        Integer b = 3;  //自动装箱为 Integer
        int c = 3;
        System.out.println(a == b); //两个引用不相同
        System.out.println(a == c); //a 自动拆箱为了 int

    }
}
